﻿import clases.dades.menu.Apartat;

/**
 * Definició del menú
 * 
 * @author JDo
 * @version 1.0
 */
class clases.dades.menu.Menu{
	private var _menu        :Array;
	private var _contacte    :Object;
	private var _telefon     :Object;
	private var _localitzacio:String;
	
	private var _length:Number = 0;
	
	/**
	 * Constructor
	 */
	public function Menu(){
		_menu = new Array();
	}
	
	/**
	 * Afegeix un apartat al menú
	 * 
	 * @see clases.dades.menu.Apartat
	 * @param $apartat Apartat a afegir
	 */
	public function addApartat($apartat:Apartat):Void{
		_menu.push($apartat);
		_length = _menu.length;
	}
	
	/**
	 * Dona un apartat a partir de la seva ID
	 * 
	 * @param $id ID del apartat a cercar
	 * @return Apartat
	 */
	public function getApartatXid($id:String):Apartat{
		var apartat:Apartat;
		
		for(var ap:Number = 0; ap<_menu.length; ap++){
			if(_menu[ap].id == $id){
				apartat = _menu[ap];
				break;
			}
		}
		
		return apartat;
	}
	
	/**
	 * Afegeix el contacte
	 * 
	 * @param $nom   Nom del contacte
	 * @param $valor Valor del contacte
	 */
	public function setContacte($nom:String,$valor:String):Void{
		_contacte = new Object();
		_contacte.nom   = $nom;
		_contacte.valor = $valor;
	}
	
	/**
	 * Afegeix el telefon
	 * 
	 * @param $nom   Nom del telefon
	 * @param $valor Valor del telefon
	 */
	public function setTelefon($nom:String,$valor:String):Void{
		_telefon = new Object();
		_telefon.nom   = $nom;
		_telefon.valor = $valor;
	}
	
	/**
	 * Afegeix la localitzacio
	 * 
	 * @param $valor Valor de la localitzacio
	 */
	public function setLocalitzacio($valor:String):Void{
		_localitzacio = $valor;
	}
	
	/**
	 * Dona un apartat a partir del seu index dins l'Array
	 * 
	 * @param $index Posició dins l'array
	 * @return Apartat
	 */
	public function getApartatXindex($index:String):Apartat{
		return _menu[$index];
	}
	
	/**
	 * getter del menu
	 * 
	 * @return <b>Array:</b> Tots els apartats dins del menu
	 */
	public function get llistat():Array{
		return _menu;
	}
	
	/**
	 * getter del nombre d'apartats del menú
	 * 
	 * @return <b>Number:</b> Nombre d'elements del menu
	 */
	public function get length():Number{
		return _length;
	}
	
	/**
	 * getter del contacte
	 * 
	 * @return <b>Object[nom,valor]:</b> dades del contacte
	 */
	public function get contacte():Object{
		return _contacte;
	}
	
	/**
	 * getter del telefon
	 * 
	 * @return <b>Object[nom,valor]:</b> dades del telefon
	 */
	public function get telefon():Object{
		return _telefon;
	}
	
	/**
	 * getter de la localitzacio
	 * 
	 * @return <b>String:</b> dades de la localitzacio
	 */
	public function get localitzacio():String{
		return _localitzacio;
	}
	
	/**
	 * @return Les dades de la clase en format String
	 */
	public function toString():String{
		return "\nmenu: " + _menu + "\n**************" + 
		       "\ncontacte.nom: " + _contacte.nom + " --- contacte.valor: " + _contacte.valor +
			   "\ntelefon.nom: " + _telefon.nom + " --- telefon.valor: " + _telefon.valor +
			   "\nlocalitzacio: " + _localitzacio;
	}
	
}